這是可以同時用在表達座標與向量計算的工具。
因為它的建構子就是一組XY值,同時還提供兩個Vector2做加減的各種方法。(不需要針對XY值個別計算。)
如果第一組Vector2是座標,第二組Vector2是座標的變動量,兩組相加後就會得到一個新座標;如果第一組Vector2是物體運動的動能向量,第二組Vector2是動能向量接收到的變動量,兩組相加後就會得到一個新的物體運動的動能向量。
甚至還可以做乘除。如果要計算兩個點的中間點,則是「兩個點Vector2相加後除以二」。
因為可以產生「向量」,所以Vector2也是用來產生物體穩定移動速度與方向的方法。
隨便在螢幕上點一下,知道座標後順便知道它跟特定目標之間的距離,並不是什麼難事。但要確保特定目標往這個座標移動時的速度是穩定的,那就是另外一回事了。
在Flutter中,Vector2有「length」屬性,可以表達「兩個點之間的距離」或「一股向量的大小」。
如果「一股向量的大小」為X,則直接將Vector2除以X,就會得到一個「不論方向為何、大小都穩定的移動向量」。
這當然不是「唯一解」,這件事情在Vector2中做法很多,例如知道方向後,就可以知道角度,這時候將決定好固定大小的速度Vector2轉動角度,一樣可以得到等量的移動向量。
總之,有了Vector2後,「物體移動」這件事就變得容易、且做法也通用好懂。
(但路徑就是另外一件事了!)
會討論這些,是因為發現「MouseJoint」並不適合用來作為實現「點擊任意位置作為物體移動的目標」的技術。
因為設定了「MouseJoint」後,物件會在點擊的目標點上「擺盪」,就跟被橡皮筋牽動一樣。
所以要實現「點擊任意位置作為物體移動的目標」,還是要取得一個穩定向量,然後將物體的座標Vector2持續「加」上穩定的向量,直到物體的座標與目標的座標之間的距離小於向量的大小為止。
(因為該死的鐵人賽規則,這篇文章就這樣發出去了。昨天的文還有好多內容要修正。)